@fudrouter/fsrouter 0.6.62 → 0.6.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/copyJs.js +0 -4
- package/dist/lib/oauth/constants/oauth.js +2 -2
- package/dist/lib/oauth/providers.js +1 -1
- package/dist/routes/providers/[id]/test/testUtils.js +3 -3
- package/dist/shared/constants/models.js +2 -2
- package/dist/sse/handlers/chat.js +10 -10
- package/dist/sse/handlers/embeddings.js +3 -3
- package/dist/sse/handlers/fetch.js +4 -4
- package/dist/sse/handlers/imageGeneration.js +5 -5
- package/dist/sse/handlers/search.js +4 -4
- package/dist/sse/handlers/stt.js +3 -3
- package/dist/sse/handlers/tts.js +4 -4
- package/dist/sse/handlers/videoGeneration.js +4 -4
- package/dist/sse/services/auth.js +2 -2
- package/dist/sse/services/model.js +1 -1
- package/dist/sse/services/tokenRefresh.js +3 -3
- package/open-sse/AGENTS.md +39 -0
- package/open-sse/config/anthropicHeaders.js +87 -0
- package/open-sse/config/appConstants.js +238 -0
- package/open-sse/config/audioRegistry.js +506 -0
- package/open-sse/config/cliFingerprints.js +304 -0
- package/open-sse/config/codexInstructions.js +119 -0
- package/open-sse/config/codexQuotaScopes.js +42 -0
- package/open-sse/config/constants.js +4 -0
- package/open-sse/config/contextEditing.js +68 -0
- package/open-sse/config/credentialLoader.js +83 -0
- package/open-sse/config/defaultThinkingSignature.js +12 -0
- package/open-sse/config/embeddingRegistry.js +264 -0
- package/open-sse/config/errorConfig.js +96 -0
- package/open-sse/config/freeModelCatalog.data.js +121 -0
- package/open-sse/config/freeModelCatalog.js +90 -0
- package/open-sse/config/freeTierCatalog.js +81 -0
- package/open-sse/config/googleTtsLanguages.js +62 -0
- package/open-sse/config/imageParamDefs.js +360 -0
- package/open-sse/config/imageRegistry.js +493 -0
- package/open-sse/config/kiroConstants.js +268 -0
- package/open-sse/config/mediaConfig.js +27 -0
- package/open-sse/config/mediaServiceKinds.js +71 -0
- package/open-sse/config/models.js +13 -0
- package/open-sse/config/moderationRegistry.js +71 -0
- package/open-sse/config/musicRegistry.js +99 -0
- package/open-sse/config/ocrRegistry.js +61 -0
- package/open-sse/config/ollamaModels.js +19 -0
- package/open-sse/config/providerErrorRules.js +114 -0
- package/open-sse/config/providerFieldStrips.js +35 -0
- package/open-sse/config/providerHeaderProfiles.js +191 -0
- package/open-sse/config/providerModels.js +106 -0
- package/open-sse/config/providerRegistry.js +16 -0
- package/open-sse/config/providers.js +19 -0
- package/open-sse/config/registryUtils.js +106 -0
- package/open-sse/config/rerankRegistry.js +177 -0
- package/open-sse/config/runtimeConfig.js +96 -0
- package/open-sse/config/runway.js +39 -0
- package/open-sse/config/searchRegistry.js +153 -0
- package/open-sse/config/toolCloaking.js +199 -0
- package/open-sse/config/ttsModels.js +129 -0
- package/open-sse/config/videoRegistry.js +207 -0
- package/open-sse/executors/adapta-web.js +435 -0
- package/open-sse/executors/antigravity.js +534 -0
- package/open-sse/executors/antigravityUpstreamError.js +13 -0
- package/open-sse/executors/auggie.js +437 -0
- package/open-sse/executors/azure-openai.js +32 -0
- package/open-sse/executors/azure.js +57 -0
- package/open-sse/executors/base.js +181 -0
- package/open-sse/executors/bedrock.js +633 -0
- package/open-sse/executors/blackbox-web.js +578 -0
- package/open-sse/executors/chatgpt-web.js +2042 -0
- package/open-sse/executors/chipotle.js +357 -0
- package/open-sse/executors/claude-web-with-auto-refresh.js +73 -0
- package/open-sse/executors/claude-web.js +586 -0
- package/open-sse/executors/cliproxyapi.js +296 -0
- package/open-sse/executors/cloudflare-ai.js +46 -0
- package/open-sse/executors/codebuddy-cn.js +40 -0
- package/open-sse/executors/codex.js +1324 -0
- package/open-sse/executors/commandCode.js +558 -0
- package/open-sse/executors/commandcode.js +88 -0
- package/open-sse/executors/copilot-m365-connection.js +176 -0
- package/open-sse/executors/copilot-m365-frames.js +192 -0
- package/open-sse/executors/copilot-m365-web.js +299 -0
- package/open-sse/executors/copilot-web.js +580 -0
- package/open-sse/executors/cursor.js +795 -0
- package/open-sse/executors/deepseek-web-with-auto-refresh.js +150 -0
- package/open-sse/executors/deepseek-web.js +875 -0
- package/open-sse/executors/default.js +430 -0
- package/open-sse/executors/devin-cli.js +351 -0
- package/open-sse/executors/doubao-web.js +550 -0
- package/open-sse/executors/duckduckgo-web.js +629 -0
- package/open-sse/executors/forceResponsesUpstream.js +33 -0
- package/open-sse/executors/gemini-business.js +320 -0
- package/open-sse/executors/gemini-cli.js +89 -0
- package/open-sse/executors/gemini-web.js +297 -0
- package/open-sse/executors/github.js +379 -0
- package/open-sse/executors/gitlab.js +569 -0
- package/open-sse/executors/glm.js +361 -0
- package/open-sse/executors/grok-cli.js +119 -0
- package/open-sse/executors/grok-web.js +345 -0
- package/open-sse/executors/huggingchat.js +467 -0
- package/open-sse/executors/iflow.js +108 -0
- package/open-sse/executors/index.js +78 -0
- package/open-sse/executors/inner-ai.js +527 -0
- package/open-sse/executors/kimchi.js +123 -0
- package/open-sse/executors/kimi-web.js +325 -0
- package/open-sse/executors/kimi.js +97 -0
- package/open-sse/executors/kiro.js +503 -0
- package/open-sse/executors/kiroThinking.js +44 -0
- package/open-sse/executors/lmarena.js +395 -0
- package/open-sse/executors/mimo-free.js +167 -0
- package/open-sse/executors/mimocode.js +392 -0
- package/open-sse/executors/ninerouter.js +155 -0
- package/open-sse/executors/nlpcloud.js +438 -0
- package/open-sse/executors/ollama-local.js +14 -0
- package/open-sse/executors/opencode-go.js +41 -0
- package/open-sse/executors/opencode.js +32 -0
- package/open-sse/executors/perplexity-web.js +581 -0
- package/open-sse/executors/poe-web.js +133 -0
- package/open-sse/executors/pollinations.js +95 -0
- package/open-sse/executors/puter.js +31 -0
- package/open-sse/executors/qoder.js +448 -0
- package/open-sse/executors/qwen-web.js +372 -0
- package/open-sse/executors/qwen.js +129 -0
- package/open-sse/executors/t3-chat-web.js +417 -0
- package/open-sse/executors/theoldllm.js +290 -0
- package/open-sse/executors/trae.js +418 -0
- package/open-sse/executors/v0-vercel-web.js +141 -0
- package/open-sse/executors/venice-web.js +142 -0
- package/open-sse/executors/vertex.js +131 -0
- package/open-sse/executors/vertexMedia.js +236 -0
- package/open-sse/executors/windsurf.js +560 -0
- package/open-sse/executors/xai.js +46 -0
- package/open-sse/executors/xiaomi-tokenplan.js +19 -0
- package/open-sse/executors/yuanbao-web.js +385 -0
- package/open-sse/executors/zed-hosted.js +281 -0
- package/open-sse/executors/zenmux-free.js +247 -0
- package/open-sse/handlers/audioSpeech.js +759 -0
- package/open-sse/handlers/audioTranscription.js +395 -0
- package/open-sse/handlers/audioTranslation.js +181 -0
- package/open-sse/handlers/chatCore/nonStreamingHandler.js +300 -0
- package/open-sse/handlers/chatCore/requestDetail.js +102 -0
- package/open-sse/handlers/chatCore/sseToJsonHandler.js +231 -0
- package/open-sse/handlers/chatCore/streamingHandler.js +95 -0
- package/open-sse/handlers/chatCore.js +404 -0
- package/open-sse/handlers/embeddingProviders/_base.js +4 -0
- package/open-sse/handlers/embeddingProviders/gemini.js +54 -0
- package/open-sse/handlers/embeddingProviders/index.js +23 -0
- package/open-sse/handlers/embeddingProviders/openai.js +39 -0
- package/open-sse/handlers/embeddingProviders/openaiCompatNode.js +13 -0
- package/open-sse/handlers/embeddingsCore.js +126 -0
- package/open-sse/handlers/fetch/index.js +237 -0
- package/open-sse/handlers/imageGenerationCore.js +230 -0
- package/open-sse/handlers/imageProviders/_base.js +31 -0
- package/open-sse/handlers/imageProviders/antigravity.js +73 -0
- package/open-sse/handlers/imageProviders/blackForestLabs.js +63 -0
- package/open-sse/handlers/imageProviders/cloudflareAi.js +207 -0
- package/open-sse/handlers/imageProviders/codex.js +217 -0
- package/open-sse/handlers/imageProviders/comfyui.js +25 -0
- package/open-sse/handlers/imageProviders/falAi.js +62 -0
- package/open-sse/handlers/imageProviders/gemini.js +40 -0
- package/open-sse/handlers/imageProviders/huggingface.js +38 -0
- package/open-sse/handlers/imageProviders/index.js +44 -0
- package/open-sse/handlers/imageProviders/leonardo.js +435 -0
- package/open-sse/handlers/imageProviders/nanobanana.js +79 -0
- package/open-sse/handlers/imageProviders/openai.js +61 -0
- package/open-sse/handlers/imageProviders/runwayml.js +72 -0
- package/open-sse/handlers/imageProviders/sdwebui.js +36 -0
- package/open-sse/handlers/imageProviders/stabilityAi.js +59 -0
- package/open-sse/handlers/imageProviders/weavy.js +222 -0
- package/open-sse/handlers/moderations.js +92 -0
- package/open-sse/handlers/ocr.js +89 -0
- package/open-sse/handlers/rerank.js +223 -0
- package/open-sse/handlers/responseSanitizer/reasoning.js +144 -0
- package/open-sse/handlers/responsesHandler.js +99 -0
- package/open-sse/handlers/search/callers.js +371 -0
- package/open-sse/handlers/search/chatSearch.js +409 -0
- package/open-sse/handlers/search/index.js +201 -0
- package/open-sse/handlers/search/normalizers.js +223 -0
- package/open-sse/handlers/search.js +1056 -0
- package/open-sse/handlers/sseParser.js +469 -0
- package/open-sse/handlers/sttCore.js +193 -0
- package/open-sse/handlers/ttsCore.js +74 -0
- package/open-sse/handlers/ttsProviders/_base.js +39 -0
- package/open-sse/handlers/ttsProviders/edgeTts.js +89 -0
- package/open-sse/handlers/ttsProviders/elevenlabs.js +48 -0
- package/open-sse/handlers/ttsProviders/gemini.js +117 -0
- package/open-sse/handlers/ttsProviders/genericFormats.js +169 -0
- package/open-sse/handlers/ttsProviders/googleTts.js +54 -0
- package/open-sse/handlers/ttsProviders/index.js +50 -0
- package/open-sse/handlers/ttsProviders/localDevice.js +87 -0
- package/open-sse/handlers/ttsProviders/minimax.js +59 -0
- package/open-sse/handlers/ttsProviders/openai.js +30 -0
- package/open-sse/handlers/ttsProviders/openrouter.js +70 -0
- package/open-sse/handlers/usageExtractor.js +93 -0
- package/open-sse/handlers/videoGenerationCore.js +119 -0
- package/open-sse/handlers/videoProviders/index.js +22 -0
- package/open-sse/handlers/videoProviders/leonardo.js +511 -0
- package/open-sse/handlers/videoProviders/weavy.js +198 -0
- package/open-sse/handlers/webFetch.js +200 -0
- package/open-sse/index.js +79 -0
- package/open-sse/mcp-server/audit.js +283 -0
- package/open-sse/mcp-server/catalog.js +184 -0
- package/open-sse/mcp-server/descriptionCompressor.js +175 -0
- package/open-sse/mcp-server/httpAuthContext.js +32 -0
- package/open-sse/mcp-server/httpTransport.js +229 -0
- package/open-sse/mcp-server/index.js +33 -0
- package/open-sse/mcp-server/mcpCallerIdentity.js +21 -0
- package/open-sse/mcp-server/runtimeHeartbeat.js +110 -0
- package/open-sse/mcp-server/schemas/a2a.js +153 -0
- package/open-sse/mcp-server/schemas/audit.js +17 -0
- package/open-sse/mcp-server/schemas/index.js +166 -0
- package/open-sse/mcp-server/schemas/pickFastestModel.js +90 -0
- package/open-sse/mcp-server/schemas/toolDefinition.js +0 -0
- package/open-sse/mcp-server/schemas/toolSearch.js +32 -0
- package/open-sse/mcp-server/schemas/tools.js +1219 -0
- package/open-sse/mcp-server/scopeEnforcement.js +80 -0
- package/open-sse/mcp-server/server.js +1168 -0
- package/open-sse/mcp-server/toolCardinality.js +78 -0
- package/open-sse/mcp-server/toolSearch/catalog.js +66 -0
- package/open-sse/mcp-server/toolSearch/handler.js +20 -0
- package/open-sse/mcp-server/toolSearch/index.js +10 -0
- package/open-sse/mcp-server/toolSearch/register.js +21 -0
- package/open-sse/mcp-server/toolSearch/search.js +55 -0
- package/open-sse/mcp-server/toolSearch/signature.js +67 -0
- package/open-sse/mcp-server/tools/advancedTools.js +893 -0
- package/open-sse/mcp-server/tools/agentSkillTools.js +69 -0
- package/open-sse/mcp-server/tools/compressionTools.js +309 -0
- package/open-sse/mcp-server/tools/gamificationTools.js +134 -0
- package/open-sse/mcp-server/tools/githubSkillTools.js +102 -0
- package/open-sse/mcp-server/tools/memoryTools.js +118 -0
- package/open-sse/mcp-server/tools/notionTools.js +101 -0
- package/open-sse/mcp-server/tools/obsidianTools.js +307 -0
- package/open-sse/mcp-server/tools/pickFastestModel.js +223 -0
- package/open-sse/mcp-server/tools/pluginTools.js +181 -0
- package/open-sse/mcp-server/tools/poolTools.js +139 -0
- package/open-sse/mcp-server/tools/skillTools.js +113 -0
- package/open-sse/package.json +10 -0
- package/open-sse/providers/REGISTRY_TEMPLATE.js +98 -0
- package/open-sse/providers/capabilities.js +293 -0
- package/open-sse/providers/index.js +51 -0
- package/open-sse/providers/models/helpers.js +20 -0
- package/open-sse/providers/models/namePatterns.js +33 -0
- package/open-sse/providers/models/schema.js +40 -0
- package/open-sse/providers/pricing.js +308 -0
- package/open-sse/providers/registry/alicode-intl.js +30 -0
- package/open-sse/providers/registry/alicode.js +31 -0
- package/open-sse/providers/registry/anthropic.js +37 -0
- package/open-sse/providers/registry/antigravity.js +81 -0
- package/open-sse/providers/registry/assemblyai.js +38 -0
- package/open-sse/providers/registry/aws-polly.js +45 -0
- package/open-sse/providers/registry/azure.js +21 -0
- package/open-sse/providers/registry/black-forest-labs.js +32 -0
- package/open-sse/providers/registry/blackbox.js +41 -0
- package/open-sse/providers/registry/brave-search.js +35 -0
- package/open-sse/providers/registry/byteplus.js +35 -0
- package/open-sse/providers/registry/cartesia.js +36 -0
- package/open-sse/providers/registry/cerebras.js +31 -0
- package/open-sse/providers/registry/chutes.js +24 -0
- package/open-sse/providers/registry/claude.js +87 -0
- package/open-sse/providers/registry/cline.js +51 -0
- package/open-sse/providers/registry/clinepass.js +57 -0
- package/open-sse/providers/registry/cloudflare-ai.js +55 -0
- package/open-sse/providers/registry/codebuddy-cn.js +77 -0
- package/open-sse/providers/registry/codex.js +100 -0
- package/open-sse/providers/registry/cohere.js +27 -0
- package/open-sse/providers/registry/comfyui.js +20 -0
- package/open-sse/providers/registry/commandcode.js +43 -0
- package/open-sse/providers/registry/coqui.js +30 -0
- package/open-sse/providers/registry/cursor.js +58 -0
- package/open-sse/providers/registry/deepgram.js +33 -0
- package/open-sse/providers/registry/deepseek.js +51 -0
- package/open-sse/providers/registry/digitalocean.js +92 -0
- package/open-sse/providers/registry/edge-tts.js +24 -0
- package/open-sse/providers/registry/elevenlabs.js +35 -0
- package/open-sse/providers/registry/exa.js +50 -0
- package/open-sse/providers/registry/fal-ai.js +34 -0
- package/open-sse/providers/registry/featherless.js +34 -0
- package/open-sse/providers/registry/firecrawl.js +34 -0
- package/open-sse/providers/registry/fireworks.js +29 -0
- package/open-sse/providers/registry/gemini-cli.js +58 -0
- package/open-sse/providers/registry/gemini.js +83 -0
- package/open-sse/providers/registry/github.js +88 -0
- package/open-sse/providers/registry/gitlab.js +32 -0
- package/open-sse/providers/registry/glm-cn.js +35 -0
- package/open-sse/providers/registry/glm.js +58 -0
- package/open-sse/providers/registry/google-pse.js +35 -0
- package/open-sse/providers/registry/google-tts.js +24 -0
- package/open-sse/providers/registry/grok-cli.js +86 -0
- package/open-sse/providers/registry/grok-web.js +39 -0
- package/open-sse/providers/registry/groq.js +37 -0
- package/open-sse/providers/registry/huggingface.js +34 -0
- package/open-sse/providers/registry/hyperbolic.js +35 -0
- package/open-sse/providers/registry/ibm-bob.js +27 -0
- package/open-sse/providers/registry/iflow.js +52 -0
- package/open-sse/providers/registry/index.js +210 -0
- package/open-sse/providers/registry/inworld.js +36 -0
- package/open-sse/providers/registry/jina-ai.js +42 -0
- package/open-sse/providers/registry/jina-reader.js +34 -0
- package/open-sse/providers/registry/kilocode.js +51 -0
- package/open-sse/providers/registry/kimchi.js +49 -0
- package/open-sse/providers/registry/kimi-coding.js +65 -0
- package/open-sse/providers/registry/kimi.js +56 -0
- package/open-sse/providers/registry/kiro.js +115 -0
- package/open-sse/providers/registry/linkup.js +34 -0
- package/open-sse/providers/registry/local-device.js +24 -0
- package/open-sse/providers/registry/mimo-free.js +24 -0
- package/open-sse/providers/registry/minimax-cn.js +76 -0
- package/open-sse/providers/registry/minimax.js +83 -0
- package/open-sse/providers/registry/mistral.js +34 -0
- package/open-sse/providers/registry/mmf.js +19 -0
- package/open-sse/providers/registry/nanobanana.js +35 -0
- package/open-sse/providers/registry/nebius.js +27 -0
- package/open-sse/providers/registry/nvidia.js +43 -0
- package/open-sse/providers/registry/ollama-local.js +19 -0
- package/open-sse/providers/registry/ollama.js +36 -0
- package/open-sse/providers/registry/openai.js +84 -0
- package/open-sse/providers/registry/opencode-go.js +41 -0
- package/open-sse/providers/registry/opencode.js +25 -0
- package/open-sse/providers/registry/openrouter.js +60 -0
- package/open-sse/providers/registry/perplexity-agent.js +49 -0
- package/open-sse/providers/registry/perplexity-web.js +33 -0
- package/open-sse/providers/registry/perplexity.js +37 -0
- package/open-sse/providers/registry/playht.js +36 -0
- package/open-sse/providers/registry/qoder.js +54 -0
- package/open-sse/providers/registry/qwen.js +33 -0
- package/open-sse/providers/registry/recraft.js +24 -0
- package/open-sse/providers/registry/runwayml.js +30 -0
- package/open-sse/providers/registry/sdwebui.js +20 -0
- package/open-sse/providers/registry/searchapi.js +35 -0
- package/open-sse/providers/registry/searxng.js +35 -0
- package/open-sse/providers/registry/serper.js +35 -0
- package/open-sse/providers/registry/siliconflow.js +39 -0
- package/open-sse/providers/registry/stability-ai.js +31 -0
- package/open-sse/providers/registry/tavily.js +50 -0
- package/open-sse/providers/registry/together.js +31 -0
- package/open-sse/providers/registry/topaz.js +19 -0
- package/open-sse/providers/registry/tortoise.js +30 -0
- package/open-sse/providers/registry/venice.js +56 -0
- package/open-sse/providers/registry/vercel-ai-gateway.js +41 -0
- package/open-sse/providers/registry/vertex-partner.js +29 -0
- package/open-sse/providers/registry/vertex.js +32 -0
- package/open-sse/providers/registry/volcengine-ark.js +35 -0
- package/open-sse/providers/registry/voyage-ai.js +30 -0
- package/open-sse/providers/registry/xai.js +45 -0
- package/open-sse/providers/registry/xiaomi-mimo.js +46 -0
- package/open-sse/providers/registry/xiaomi-tokenplan.js +63 -0
- package/open-sse/providers/registry/youcom.js +35 -0
- package/open-sse/providers/schema.js +76 -0
- package/open-sse/providers/shared.js +74 -0
- package/open-sse/providers/thinkingLevels.js +48 -0
- package/open-sse/rtk/applyFilter.js +15 -0
- package/open-sse/rtk/autodetect.js +111 -0
- package/open-sse/rtk/caveman.js +100 -0
- package/open-sse/rtk/cavemanPrompts.js +78 -0
- package/open-sse/rtk/constants.js +55 -0
- package/open-sse/rtk/filters/buildOutput.js +127 -0
- package/open-sse/rtk/filters/dedupLog.js +44 -0
- package/open-sse/rtk/filters/find.js +50 -0
- package/open-sse/rtk/filters/gitDiff.js +92 -0
- package/open-sse/rtk/filters/gitLog.js +99 -0
- package/open-sse/rtk/filters/gitStatus.js +117 -0
- package/open-sse/rtk/filters/grep.js +48 -0
- package/open-sse/rtk/filters/ls.js +79 -0
- package/open-sse/rtk/filters/readNumbered.js +27 -0
- package/open-sse/rtk/filters/searchList.js +52 -0
- package/open-sse/rtk/filters/smartTruncate.js +15 -0
- package/open-sse/rtk/filters/tree.js +32 -0
- package/open-sse/rtk/headroom.js +215 -0
- package/open-sse/rtk/index.js +155 -0
- package/open-sse/rtk/paleo.js +47 -0
- package/open-sse/rtk/ponytail.js +9 -0
- package/open-sse/rtk/ponytailPrompt.js +52 -0
- package/open-sse/rtk/ponytailPrompts.js +76 -0
- package/open-sse/rtk/pxpipe.js +104 -0
- package/open-sse/rtk/registry.js +38 -0
- package/open-sse/rtk/systemInject.js +98 -0
- package/open-sse/services/accountFallback.js +323 -0
- package/open-sse/services/antigravityHeaders.js +91 -0
- package/open-sse/services/antigravityVersion.js +154 -0
- package/open-sse/services/clinepassModels.js +63 -0
- package/open-sse/services/codexQuotaFetcher.js +312 -0
- package/open-sse/services/codexVerbosity.js +30 -0
- package/open-sse/services/combo/context.js +12 -0
- package/open-sse/services/combo/fingerprintExpansion.js +51 -0
- package/open-sse/services/combo/headroomRanking.js +28 -0
- package/open-sse/services/combo/quotaExhaustionCutoff.js +87 -0
- package/open-sse/services/combo/quotaScoring.js +226 -0
- package/open-sse/services/combo/quotaShareConcurrency.js +25 -0
- package/open-sse/services/combo/quotaShareInflight.js +50 -0
- package/open-sse/services/combo/quotaShareStrategy.js +130 -0
- package/open-sse/services/combo/resolveAutoStrategy.js +231 -0
- package/open-sse/services/combo/responseValidation.js +140 -0
- package/open-sse/services/combo/runtimeUnits.js +195 -0
- package/open-sse/services/combo/sessionStickiness.js +128 -0
- package/open-sse/services/combo/shadowRouting.js +131 -0
- package/open-sse/services/combo/targetExhaustion.js +75 -0
- package/open-sse/services/combo/targetSorters.js +126 -0
- package/open-sse/services/combo/targetTimeoutRunner.js +65 -0
- package/open-sse/services/combo/validateQuality.js +271 -0
- package/open-sse/services/combo.js +571 -0
- package/open-sse/services/comboAgentMiddleware.js +91 -0
- package/open-sse/services/comboConfig.js +153 -0
- package/open-sse/services/comboManifestMetrics.js +10 -0
- package/open-sse/services/comboMetrics.js +278 -0
- package/open-sse/services/compact.js +71 -0
- package/open-sse/services/copilotModels.js +155 -0
- package/open-sse/services/emergencyFallback.js +109 -0
- package/open-sse/services/errorClassifier.js +190 -0
- package/open-sse/services/evalRouting.js +201 -0
- package/open-sse/services/freeWebSearch.js +4 -0
- package/open-sse/services/fusion.js +223 -0
- package/open-sse/services/intentClassifier.js +631 -0
- package/open-sse/services/kimchiModels.js +176 -0
- package/open-sse/services/kiroModels.js +332 -0
- package/open-sse/services/model.js +136 -0
- package/open-sse/services/modelCapabilities.js +5 -0
- package/open-sse/services/modelDeprecation.js +101 -0
- package/open-sse/services/modelFamilyFallback.js +166 -0
- package/open-sse/services/oauthCredentialManager.js +156 -0
- package/open-sse/services/pipeline.js +107 -0
- package/open-sse/services/projectId.js +306 -0
- package/open-sse/services/provider.js +169 -0
- package/open-sse/services/providerCooldownTracker.js +94 -0
- package/open-sse/services/providerDefaultRateLimit.js +11 -0
- package/open-sse/services/proxyAutoSelector.js +24 -0
- package/open-sse/services/qoderModels.js +214 -0
- package/open-sse/services/quotaFetchThrottle.js +103 -0
- package/open-sse/services/quotaMonitor.js +310 -0
- package/open-sse/services/quotaPreflight.js +266 -0
- package/open-sse/services/rateLimitManager/headers.js +56 -0
- package/open-sse/services/rateLimitManager.js +616 -0
- package/open-sse/services/rateLimitSemaphore.js +112 -0
- package/open-sse/services/responsesInputSanitizer.js +99 -0
- package/open-sse/services/slidingWindowLimiter.js +44 -0
- package/open-sse/services/streamRecovery.js +355 -0
- package/open-sse/services/taskAwareRouter.js +227 -0
- package/open-sse/services/taskAwareRouting.js +332 -0
- package/open-sse/services/thinkingBudget.js +247 -0
- package/open-sse/services/tokenRefresh/dedup.js +31 -0
- package/open-sse/services/tokenRefresh/providers.js +624 -0
- package/open-sse/services/tokenRefresh.js +254 -0
- package/open-sse/services/usage/claude.js +147 -0
- package/open-sse/services/usage/codebuddy-cn.js +138 -0
- package/open-sse/services/usage/codex.js +267 -0
- package/open-sse/services/usage/github.js +100 -0
- package/open-sse/services/usage/google.js +241 -0
- package/open-sse/services/usage/grok-cli.js +274 -0
- package/open-sse/services/usage/kiro.js +188 -0
- package/open-sse/services/usage/minimax.js +234 -0
- package/open-sse/services/usage/misc.js +288 -0
- package/open-sse/services/usage/shared.js +70 -0
- package/open-sse/services/usage.js +62 -0
- package/open-sse/services/usageDb.js +2 -0
- package/open-sse/services/webSearchRouting.js +25 -0
- package/open-sse/services/wildcardRouter.js +59 -0
- package/open-sse/shared/clineAuth.js +37 -0
- package/open-sse/shared/machineId.js +19 -0
- package/open-sse/shared/qoder/constants.js +64 -0
- package/open-sse/shared/qoder/cosy.js +175 -0
- package/open-sse/shared/qoder/encoding.js +55 -0
- package/open-sse/transformer/responsesTransformer.js +439 -0
- package/open-sse/transformer/streamToJsonConverter.js +103 -0
- package/open-sse/translator/concerns/chunk.js +11 -0
- package/open-sse/translator/concerns/finishReason.js +63 -0
- package/open-sse/translator/concerns/image.js +124 -0
- package/open-sse/translator/concerns/json.js +5 -0
- package/open-sse/translator/concerns/message.js +7 -0
- package/open-sse/translator/concerns/modality.js +155 -0
- package/open-sse/translator/concerns/paramSupport.js +75 -0
- package/open-sse/translator/concerns/prefetch.js +96 -0
- package/open-sse/translator/concerns/reasoning.js +24 -0
- package/open-sse/translator/concerns/thinking.js +53 -0
- package/open-sse/translator/concerns/thinkingUnified.js +329 -0
- package/open-sse/translator/concerns/toolCall.js +153 -0
- package/open-sse/translator/concerns/usage.js +69 -0
- package/open-sse/translator/formats/claude.js +368 -0
- package/open-sse/translator/formats/gemini.js +380 -0
- package/open-sse/translator/formats/maxTokens.js +34 -0
- package/open-sse/translator/formats/openai.js +134 -0
- package/open-sse/translator/formats/responsesApi.js +141 -0
- package/open-sse/translator/formats.js +36 -0
- package/open-sse/translator/helpers/claudeHelper.js +216 -0
- package/open-sse/translator/helpers/geminiHelper.js +372 -0
- package/open-sse/translator/helpers/imageHelper.js +34 -0
- package/open-sse/translator/helpers/maxTokensHelper.js +27 -0
- package/open-sse/translator/helpers/openaiHelper.js +130 -0
- package/open-sse/translator/helpers/responsesApiHelper.js +139 -0
- package/open-sse/translator/helpers/toolCallHelper.js +148 -0
- package/open-sse/translator/index.js +252 -0
- package/open-sse/translator/request/antigravity-to-openai.js +242 -0
- package/open-sse/translator/request/claude-to-kiro.js +478 -0
- package/open-sse/translator/request/claude-to-openai.js +263 -0
- package/open-sse/translator/request/gemini-to-openai.js +152 -0
- package/open-sse/translator/request/openai-responses.js +385 -0
- package/open-sse/translator/request/openai-to-claude.js +383 -0
- package/open-sse/translator/request/openai-to-commandcode.js +176 -0
- package/open-sse/translator/request/openai-to-cursor.js +185 -0
- package/open-sse/translator/request/openai-to-gemini.js +442 -0
- package/open-sse/translator/request/openai-to-kiro.js +607 -0
- package/open-sse/translator/request/openai-to-kiro.old.js +278 -0
- package/open-sse/translator/request/openai-to-ollama.js +195 -0
- package/open-sse/translator/request/openai-to-vertex.js +42 -0
- package/open-sse/translator/response/claude-to-openai.js +195 -0
- package/open-sse/translator/response/commandcode-to-openai.js +188 -0
- package/open-sse/translator/response/cursor-to-openai.js +30 -0
- package/open-sse/translator/response/gemini-to-openai.js +147 -0
- package/open-sse/translator/response/kiro-to-claude.js +261 -0
- package/open-sse/translator/response/kiro-to-openai.js +160 -0
- package/open-sse/translator/response/ollama-to-openai.js +134 -0
- package/open-sse/translator/response/openai-responses.js +535 -0
- package/open-sse/translator/response/openai-to-antigravity.js +123 -0
- package/open-sse/translator/response/openai-to-claude.js +265 -0
- package/open-sse/translator/schema/blocks.js +43 -0
- package/open-sse/translator/schema/defaults.js +7 -0
- package/open-sse/translator/schema/finishReasons.js +27 -0
- package/open-sse/translator/schema/index.js +8 -0
- package/open-sse/translator/schema/roles.js +16 -0
- package/open-sse/utils/agentGoalPolicy.js +85 -0
- package/open-sse/utils/aiSdkCompat.js +75 -0
- package/open-sse/utils/bypassHandler.js +298 -0
- package/open-sse/utils/cacheControlPolicy.js +189 -0
- package/open-sse/utils/claudeCloaking.js +155 -0
- package/open-sse/utils/claudeHeaderCache.js +70 -0
- package/open-sse/utils/claudeSignature.js +41 -0
- package/open-sse/utils/clientDetector.js +63 -0
- package/open-sse/utils/codebuddySanitizer.js +96 -0
- package/open-sse/utils/composerToolCalls.js +158 -0
- package/open-sse/utils/cors.js +13 -0
- package/open-sse/utils/cursorChecksum.js +149 -0
- package/open-sse/utils/cursorImages.js +224 -0
- package/open-sse/utils/cursorProtobuf.js +904 -0
- package/open-sse/utils/cursorVersionDetector.js +55 -0
- package/open-sse/utils/debugLog.js +14 -0
- package/open-sse/utils/diagnostics.js +143 -0
- package/open-sse/utils/error.js +164 -0
- package/open-sse/utils/estimateSize.js +33 -0
- package/open-sse/utils/finishReason.js +32 -0
- package/open-sse/utils/flattenToolHistory.js +68 -0
- package/open-sse/utils/headers.js +36 -0
- package/open-sse/utils/heapPressure.js +35 -0
- package/open-sse/utils/jsonToSse.js +125 -0
- package/open-sse/utils/keepaliveThreshold.js +40 -0
- package/open-sse/utils/logger.js +104 -0
- package/open-sse/utils/noThinkingAlias.js +74 -0
- package/open-sse/utils/number.js +7 -0
- package/open-sse/utils/ollamaTransform.js +85 -0
- package/open-sse/utils/opencodeHeaders.js +47 -0
- package/open-sse/utils/progressTracker.js +81 -0
- package/open-sse/utils/providerRequestLogging.js +219 -0
- package/open-sse/utils/proxyFetch.js +369 -0
- package/open-sse/utils/reasoningContentInjector.js +79 -0
- package/open-sse/utils/reasoningFields.js +70 -0
- package/open-sse/utils/requestLogger.js +260 -0
- package/open-sse/utils/responsesInputNormalization.js +92 -0
- package/open-sse/utils/responsesStatePolicy.js +52 -0
- package/open-sse/utils/responsesStreamHelpers.js +49 -0
- package/open-sse/utils/sessionManager.js +240 -0
- package/open-sse/utils/sleep.js +6 -0
- package/open-sse/utils/sse.js +14 -0
- package/open-sse/utils/sseConstants.js +23 -0
- package/open-sse/utils/sseHeartbeat.js +104 -0
- package/open-sse/utils/stream.js +517 -0
- package/open-sse/utils/streamFailureFinalization.js +134 -0
- package/open-sse/utils/streamHandler.js +250 -0
- package/open-sse/utils/streamHelpers.js +137 -0
- package/open-sse/utils/textualToolCall.js +104 -0
- package/open-sse/utils/thinkCloseMarker.js +72 -0
- package/open-sse/utils/thinkTagParser.js +146 -0
- package/open-sse/utils/toolCallArguments.js +12 -0
- package/open-sse/utils/toolDeduper.js +49 -0
- package/open-sse/utils/toolSources.js +31 -0
- package/open-sse/utils/upstreamResponseHeaders.js +25 -0
- package/open-sse/utils/urlSanitize.js +15 -0
- package/open-sse/utils/usageTracking.js +347 -0
- package/package.json +1 -1
package/bin/copyJs.js
CHANGED
|
@@ -46,19 +46,15 @@ function rewriteImports(content, filePath, isJsCopy = false) {
|
|
|
46
46
|
const relToPkgRoot = relToRoot;
|
|
47
47
|
|
|
48
48
|
updated = updated.replace(/from\s+['"]open-sse\/([^'"]+)['"]/g, (m, impPath) => {
|
|
49
|
-
if (isJsCopy) return `from './dist/open-sse/${impPath}'`;
|
|
50
49
|
return `from '${relToPkgRoot}/open-sse/${impPath}'`;
|
|
51
50
|
});
|
|
52
51
|
updated = updated.replace(/from\s+['"]open-sse['"]/g, (m) => {
|
|
53
|
-
if (isJsCopy) return `from './dist/open-sse/index.js'`;
|
|
54
52
|
return `from '${relToPkgRoot}/open-sse/index.js'`;
|
|
55
53
|
});
|
|
56
54
|
updated = updated.replace(/import\s+['"]open-sse\/([^'"]+)['"]/g, (m, impPath) => {
|
|
57
|
-
if (isJsCopy) return `import './dist/open-sse/${impPath}'`;
|
|
58
55
|
return `import '${relToPkgRoot}/open-sse/${impPath}'`;
|
|
59
56
|
});
|
|
60
57
|
updated = updated.replace(/import\s+['"]open-sse['"]/g, (m) => {
|
|
61
|
-
if (isJsCopy) return `import './dist/open-sse/index.js'`;
|
|
62
58
|
return `import '${relToPkgRoot}/open-sse/index.js'`;
|
|
63
59
|
});
|
|
64
60
|
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* OAuth Configuration Constants — static data lives in registry, re-exported here for consumers.
|
|
3
3
|
*/
|
|
4
4
|
import { platform, arch } from "os";
|
|
5
|
-
import { ANTIGRAVITY_OAUTH_CLIENT, GOOGLE_OAUTH_CLIENT } from '
|
|
6
|
-
import { PROVIDER_OAUTH, PROVIDERS as REGISTRY_PROVIDERS } from '
|
|
5
|
+
import { ANTIGRAVITY_OAUTH_CLIENT, GOOGLE_OAUTH_CLIENT } from '../../../../open-sse/providers/shared.js';
|
|
6
|
+
import { PROVIDER_OAUTH, PROVIDERS as REGISTRY_PROVIDERS } from '../../../../open-sse/providers/index.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Get the platform enum value based on the current OS.
|
|
@@ -3,12 +3,12 @@ import { resolveConnectionProxyConfig } from '../../../../lib/network/connection
|
|
|
3
3
|
import { testProxyUrl } from '../../../../lib/network/proxyTest.js';
|
|
4
4
|
import { isOpenAICompatibleProvider, isAnthropicCompatibleProvider } from '../../../../shared/constants/providers.js';
|
|
5
5
|
import { PROVIDER_ENDPOINTS } from '../../../../shared/constants/config.js';
|
|
6
|
-
import { getDefaultModel } from '
|
|
7
|
-
import { resolveOllamaLocalHost } from '
|
|
6
|
+
import { getDefaultModel } from '../../../../../open-sse/config/providerModels.js';
|
|
7
|
+
import { resolveOllamaLocalHost } from '../../../../../open-sse/config/providers.js';
|
|
8
8
|
import {
|
|
9
9
|
refreshProviderCredentials,
|
|
10
10
|
shouldRefreshCredentials,
|
|
11
|
-
} from '
|
|
11
|
+
} from '../../../../../open-sse/services/oauthCredentialManager.js';
|
|
12
12
|
import {
|
|
13
13
|
GEMINI_CONFIG,
|
|
14
14
|
ANTIGRAVITY_CONFIG,
|
|
@@ -11,10 +11,10 @@ export {
|
|
|
11
11
|
getModelsByProviderId,
|
|
12
12
|
getModelUpstreamId,
|
|
13
13
|
getModelQuotaFamily
|
|
14
|
-
} from '
|
|
14
|
+
} from '../../../open-sse/config/providerModels.js';
|
|
15
15
|
|
|
16
16
|
import { AI_PROVIDERS, isOpenAICompatibleProvider } from "./providers.js";
|
|
17
|
-
import { PROVIDER_MODELS as MODELS } from '
|
|
17
|
+
import { PROVIDER_MODELS as MODELS } from '../../../open-sse/config/providerModels.js';
|
|
18
18
|
|
|
19
19
|
// Providers that accept any model (passthrough)
|
|
20
20
|
const PASSTHROUGH_PROVIDERS = new Set(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import '
|
|
1
|
+
import '../../../open-sse/index.js';
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
getProviderCredentials,
|
|
@@ -7,20 +7,20 @@ import {
|
|
|
7
7
|
extractApiKey,
|
|
8
8
|
isValidApiKey,
|
|
9
9
|
} from "../services/auth.js";
|
|
10
|
-
import { cacheClaudeHeaders } from '
|
|
10
|
+
import { cacheClaudeHeaders } from '../../../open-sse/utils/claudeHeaderCache.js';
|
|
11
11
|
import { getSettings } from "../../lib/localDb.js";
|
|
12
12
|
import { getModelInfo, getComboModels } from "../services/model.js";
|
|
13
|
-
import { getModelType } from '
|
|
13
|
+
import { getModelType } from '../../../open-sse/config/providerModels.js';
|
|
14
14
|
import { handleImageGeneration } from "./imageGeneration.js";
|
|
15
|
-
import { handleChatCore } from '
|
|
16
|
-
import { errorResponse, unavailableResponse } from '
|
|
17
|
-
import { handleComboChat, handleFusionChat } from '
|
|
18
|
-
import { handleBypassRequest } from '
|
|
19
|
-
import { HTTP_STATUS } from '
|
|
20
|
-
import { detectFormatByEndpoint } from '
|
|
15
|
+
import { handleChatCore } from '../../../open-sse/handlers/chatCore.js';
|
|
16
|
+
import { errorResponse, unavailableResponse } from '../../../open-sse/utils/error.js';
|
|
17
|
+
import { handleComboChat, handleFusionChat } from '../../../open-sse/services/combo.js';
|
|
18
|
+
import { handleBypassRequest } from '../../../open-sse/utils/bypassHandler.js';
|
|
19
|
+
import { HTTP_STATUS } from '../../../open-sse/config/runtimeConfig.js';
|
|
20
|
+
import { detectFormatByEndpoint } from '../../../open-sse/translator/formats.js';
|
|
21
21
|
import * as log from "../utils/logger.js";
|
|
22
22
|
import { updateProviderCredentials, checkAndRefreshToken } from "../services/tokenRefresh.js";
|
|
23
|
-
import { getProjectIdForConnection } from '
|
|
23
|
+
import { getProjectIdForConnection } from '../../../open-sse/services/projectId.js';
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* Handle chat completion request
|
|
@@ -7,9 +7,9 @@ import {
|
|
|
7
7
|
} from "../services/auth.js";
|
|
8
8
|
import { getSettings } from "../../lib/localDb.js";
|
|
9
9
|
import { getModelInfo } from "../services/model.js";
|
|
10
|
-
import { handleEmbeddingsCore } from '
|
|
11
|
-
import { errorResponse, unavailableResponse } from '
|
|
12
|
-
import { HTTP_STATUS } from '
|
|
10
|
+
import { handleEmbeddingsCore } from '../../../open-sse/handlers/embeddingsCore.js';
|
|
11
|
+
import { errorResponse, unavailableResponse } from '../../../open-sse/utils/error.js';
|
|
12
|
+
import { HTTP_STATUS } from '../../../open-sse/config/runtimeConfig.js';
|
|
13
13
|
import * as log from "../utils/logger.js";
|
|
14
14
|
import { updateProviderCredentials, checkAndRefreshToken } from "../services/tokenRefresh.js";
|
|
15
15
|
|
|
@@ -7,12 +7,12 @@ import {
|
|
|
7
7
|
} from "../services/auth.js";
|
|
8
8
|
import { getSettings, getCombos } from "../../lib/localDb.js";
|
|
9
9
|
import { AI_PROVIDERS, resolveProviderId } from "../../shared/constants/providers.js";
|
|
10
|
-
import { handleFetchCore } from '
|
|
11
|
-
import { errorResponse, unavailableResponse } from '
|
|
12
|
-
import { HTTP_STATUS } from '
|
|
10
|
+
import { handleFetchCore } from '../../../open-sse/handlers/fetch/index.js';
|
|
11
|
+
import { errorResponse, unavailableResponse } from '../../../open-sse/utils/error.js';
|
|
12
|
+
import { HTTP_STATUS } from '../../../open-sse/config/runtimeConfig.js';
|
|
13
13
|
import * as log from "../utils/logger.js";
|
|
14
14
|
import { updateProviderCredentials, checkAndRefreshToken } from "../services/tokenRefresh.js";
|
|
15
|
-
import { handleComboChat, getComboModelsFromData } from '
|
|
15
|
+
import { handleComboChat, getComboModelsFromData } from '../../../open-sse/services/combo.js';
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Handle web fetch (URL extraction) request for the SSE/Next.js server.
|
|
@@ -7,12 +7,12 @@ import {
|
|
|
7
7
|
} from "../services/auth.js";
|
|
8
8
|
import { getSettings } from "../../lib/localDb.js";
|
|
9
9
|
import { getModelInfo, getComboModels } from "../services/model.js";
|
|
10
|
-
import { handleImageGenerationCore } from '
|
|
11
|
-
import { errorResponse, unavailableResponse } from '
|
|
12
|
-
import { HTTP_STATUS } from '
|
|
10
|
+
import { handleImageGenerationCore } from '../../../open-sse/handlers/imageGenerationCore.js';
|
|
11
|
+
import { errorResponse, unavailableResponse } from '../../../open-sse/utils/error.js';
|
|
12
|
+
import { HTTP_STATUS } from '../../../open-sse/config/runtimeConfig.js';
|
|
13
13
|
import { updateProviderCredentials, checkAndRefreshToken } from "../services/tokenRefresh.js";
|
|
14
|
-
import { handleComboChat } from '
|
|
15
|
-
import { saveUsageStats, buildRequestDetail } from '
|
|
14
|
+
import { handleComboChat } from '../../../open-sse/services/combo.js';
|
|
15
|
+
import { saveUsageStats, buildRequestDetail } from '../../../open-sse/handlers/chatCore/requestDetail.js';
|
|
16
16
|
import { saveRequestDetail } from "../../lib/usageDb.js";
|
|
17
17
|
import * as log from "../utils/logger.js";
|
|
18
18
|
|
|
@@ -7,12 +7,12 @@ import {
|
|
|
7
7
|
} from "../services/auth.js";
|
|
8
8
|
import { getSettings, getCombos } from "../../lib/localDb.js";
|
|
9
9
|
import { AI_PROVIDERS, resolveProviderId } from "../../shared/constants/providers.js";
|
|
10
|
-
import { handleSearchCore } from '
|
|
11
|
-
import { errorResponse, unavailableResponse } from '
|
|
12
|
-
import { HTTP_STATUS } from '
|
|
10
|
+
import { handleSearchCore } from '../../../open-sse/handlers/search/index.js';
|
|
11
|
+
import { errorResponse, unavailableResponse } from '../../../open-sse/utils/error.js';
|
|
12
|
+
import { HTTP_STATUS } from '../../../open-sse/config/runtimeConfig.js';
|
|
13
13
|
import * as log from "../utils/logger.js";
|
|
14
14
|
import { updateProviderCredentials, checkAndRefreshToken } from "../services/tokenRefresh.js";
|
|
15
|
-
import { handleComboChat, getComboModelsFromData } from '
|
|
15
|
+
import { handleComboChat, getComboModelsFromData } from '../../../open-sse/services/combo.js';
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Handle web search request for the SSE/Next.js server.
|
package/dist/sse/handlers/stt.js
CHANGED
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
} from "../services/auth.js";
|
|
5
5
|
import { getSettings } from "../../lib/localDb.js";
|
|
6
6
|
import { getModelInfo } from "../services/model.js";
|
|
7
|
-
import { handleSttCore } from '
|
|
8
|
-
import { errorResponse, unavailableResponse } from '
|
|
9
|
-
import { HTTP_STATUS } from '
|
|
7
|
+
import { handleSttCore } from '../../../open-sse/handlers/sttCore.js';
|
|
8
|
+
import { errorResponse, unavailableResponse } from '../../../open-sse/utils/error.js';
|
|
9
|
+
import { HTTP_STATUS } from '../../../open-sse/config/runtimeConfig.js';
|
|
10
10
|
import { AI_PROVIDERS } from "../../shared/constants/providers.js";
|
|
11
11
|
import * as log from "../utils/logger.js";
|
|
12
12
|
|
package/dist/sse/handlers/tts.js
CHANGED
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
} from "../services/auth.js";
|
|
5
5
|
import { getSettings } from "../../lib/localDb.js";
|
|
6
6
|
import { getModelInfo, getComboModels } from "../services/model.js";
|
|
7
|
-
import { handleTtsCore } from '
|
|
8
|
-
import { errorResponse, unavailableResponse } from '
|
|
9
|
-
import { HTTP_STATUS } from '
|
|
7
|
+
import { handleTtsCore } from '../../../open-sse/handlers/ttsCore.js';
|
|
8
|
+
import { errorResponse, unavailableResponse } from '../../../open-sse/utils/error.js';
|
|
9
|
+
import { HTTP_STATUS } from '../../../open-sse/config/runtimeConfig.js';
|
|
10
10
|
import { AI_PROVIDERS } from "../../shared/constants/providers.js";
|
|
11
|
-
import { handleComboChat } from '
|
|
11
|
+
import { handleComboChat } from '../../../open-sse/services/combo.js';
|
|
12
12
|
import * as log from "../utils/logger.js";
|
|
13
13
|
|
|
14
14
|
// Derived from providers.js: any TTS provider not noAuth requires stored credentials
|
|
@@ -7,11 +7,11 @@ import {
|
|
|
7
7
|
} from "../services/auth.js";
|
|
8
8
|
import { getSettings } from "../../lib/localDb.js";
|
|
9
9
|
import { getModelInfo } from "../services/model.js";
|
|
10
|
-
import { handleVideoGenerationCore } from '
|
|
11
|
-
import { errorResponse, unavailableResponse } from '
|
|
12
|
-
import { HTTP_STATUS } from '
|
|
10
|
+
import { handleVideoGenerationCore } from '../../../open-sse/handlers/videoGenerationCore.js';
|
|
11
|
+
import { errorResponse, unavailableResponse } from '../../../open-sse/utils/error.js';
|
|
12
|
+
import { HTTP_STATUS } from '../../../open-sse/config/runtimeConfig.js';
|
|
13
13
|
import { checkAndRefreshToken, updateProviderCredentials } from "../services/tokenRefresh.js";
|
|
14
|
-
import { saveUsageStats, buildRequestDetail } from '
|
|
14
|
+
import { saveUsageStats, buildRequestDetail } from '../../../open-sse/handlers/chatCore/requestDetail.js';
|
|
15
15
|
import { saveRequestDetail } from "../../lib/usageDb.js";
|
|
16
16
|
import * as log from "../utils/logger.js";
|
|
17
17
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getProviderConnections, validateApiKey, updateProviderConnection, getSettings } from "../../lib/localDb.js";
|
|
2
2
|
import { resolveConnectionProxyConfig } from "../../lib/network/connectionProxy.js";
|
|
3
|
-
import { formatRetryAfter, checkFallbackError, isModelLockActive, buildModelLockUpdate, getEarliestModelLockUntil } from '
|
|
4
|
-
import { MAX_RATE_LIMIT_COOLDOWN_MS } from '
|
|
3
|
+
import { formatRetryAfter, checkFallbackError, isModelLockActive, buildModelLockUpdate, getEarliestModelLockUntil } from '../../../open-sse/services/accountFallback.js';
|
|
4
|
+
import { MAX_RATE_LIMIT_COOLDOWN_MS } from '../../../open-sse/config/errorConfig.js';
|
|
5
5
|
import { resolveProviderId, FREE_PROVIDERS } from "../../shared/constants/providers.js";
|
|
6
6
|
import * as log from "../utils/logger.js";
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Re-export from open-sse with localDb integration
|
|
2
2
|
import { getModelAliases, getComboByName, getProviderNodes } from "../../lib/localDb.js";
|
|
3
|
-
import { parseModel as parseModelCore, resolveModelAliasFromMap, getModelInfoCore } from '
|
|
3
|
+
import { parseModel as parseModelCore, resolveModelAliasFromMap, getModelInfoCore } from '../../../open-sse/services/model.js';
|
|
4
4
|
|
|
5
5
|
// Local provider alias overrides (HMR-friendly, applied on top of open-sse map)
|
|
6
6
|
const LOCAL_PROVIDER_ALIASES = {
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
getProjectIdForConnection,
|
|
6
6
|
invalidateProjectId,
|
|
7
7
|
removeConnection,
|
|
8
|
-
} from '
|
|
8
|
+
} from '../../../open-sse/services/projectId.js';
|
|
9
9
|
import {
|
|
10
10
|
TOKEN_EXPIRY_BUFFER_MS as BUFFER_MS,
|
|
11
11
|
refreshAccessToken as _refreshAccessToken,
|
|
@@ -22,11 +22,11 @@ import {
|
|
|
22
22
|
getAllAccessTokens as _getAllAccessTokens,
|
|
23
23
|
refreshKiroToken as _refreshKiroToken,
|
|
24
24
|
getRefreshLeadMs as _getRefreshLeadMs
|
|
25
|
-
} from '
|
|
25
|
+
} from '../../../open-sse/services/tokenRefresh.js';
|
|
26
26
|
import {
|
|
27
27
|
refreshProviderCredentials as _refreshProviderCredentials,
|
|
28
28
|
shouldRefreshCredentials as _shouldRefreshCredentials,
|
|
29
|
-
} from '
|
|
29
|
+
} from '../../../open-sse/services/oauthCredentialManager.js';
|
|
30
30
|
|
|
31
31
|
export const TOKEN_EXPIRY_BUFFER_MS = BUFFER_MS;
|
|
32
32
|
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# open-sse
|
|
2
|
+
|
|
3
|
+
Provider-agnostic SSE engine: one OpenAI-style request → any provider (LLM chat, image, embedding, tts, stt, search), streamed back in the client's format.
|
|
4
|
+
|
|
5
|
+
## Request lifecycle (chat)
|
|
6
|
+
|
|
7
|
+
`handlers/chatCore.js` → `services/model.js` `parseModel` (resolve `provider/model`) → **pre-translate hooks** (`rtk/` tool_result compress, `rtk/headroom.js` proxy compress, `rtk/caveman.js` system inject — all fail-open) → `executors/index.js` `getExecutor(provider)` → `translator/index.js` `translateRequest` (client format → provider format) → `executor.execute()` (streams upstream) → `translateResponse` (provider chunks → client format) → SSE out.
|
|
8
|
+
|
|
9
|
+
## Directory map
|
|
10
|
+
|
|
11
|
+
- `config/` — ALL constants/config (no hardcode elsewhere). `providers.js`/`registry/` (provider defs), `providerModels.js` (alias→models matrix), `runtimeConfig.js` (timeouts, token limits), `*Constants.js`.
|
|
12
|
+
- `translator/` — format conversion. `request/<from>-to-<to>.js`, `response/<from>-to-<to>.js`, `schema/` (enums: ROLE, CLAUDE_BLOCK…), `concerns/` (shared logic), `formats.js`+`formats/` (per-format). `index.js` is the registry/entry.
|
|
13
|
+
- `executors/` — per-provider upstream call. `base.js` (BaseExecutor), one file per special provider, `index.js` map.
|
|
14
|
+
- `providers/` — registry build + `capabilities.js` + `pricing.js`. Entry: `index.js` (PROVIDERS).
|
|
15
|
+
- `handlers/` — per-modality cores (chat/image/embedding/tts/stt/search) + sub-provider folders. `chatCore/` has the streaming/non-streaming/sse-to-json handlers.
|
|
16
|
+
- `rtk/` — request token-killer. `index.js` compresses `tool_result` content in-place (OpenAI/Claude/Kiro shapes); `filters/` per-tool compressors + `autodetect.js`; `headroom.js` external compress proxy; `caveman.js` system-prompt injector.
|
|
17
|
+
- `transformer/` — `responsesTransformer.js` (Chat Completions SSE → Codex Responses API SSE), `streamToJsonConverter.js`.
|
|
18
|
+
- `shared/` — cross-provider auth/identity: `clineAuth.js`, `machineId.js`, `qoder/`.
|
|
19
|
+
- `services/` — `model.js`, `provider.js`, `accountFallback.js`, `combo.js`, `compact.js`, `tokenRefresh/`+`tokenRefresh.js`, `oauthCredentialManager.js`, `usage/`, `projectId.js`, `kiroModels.js`/`qoderModels.js`.
|
|
20
|
+
- `utils/` — streamHandler, stream, sse, error, sessionManager, claudeCloaking, clientDetector, proxyFetch (patches global fetch), cursorProtobuf/cursorChecksum, ollamaTransform.
|
|
21
|
+
|
|
22
|
+
## Conventions
|
|
23
|
+
|
|
24
|
+
- Config-driven, DRY, camelCase. NEVER hardcode values, models, or block/role strings — use `config/` + `schema/` constants.
|
|
25
|
+
- Translator pipeline pivots through OpenAI as the intermediate format. A translator registered on the exact `source:target` pair (e.g. `claude:kiro`) runs as a **direct route**, skipping the lossy double-hop.
|
|
26
|
+
- Translators self-register via `register(from, to, reqFn, resFn)` as an import side-effect — new files MUST be imported in `translator/index.js`.
|
|
27
|
+
|
|
28
|
+
## How to add
|
|
29
|
+
|
|
30
|
+
- **Provider**: copy `providers/REGISTRY_TEMPLATE.js` → `providers/registry/{id}.js`; add models to `config/providerModels.js`. Generic providers need no executor (DefaultExecutor handles OpenAI-compatible APIs).
|
|
31
|
+
- **Executor** (only for non-standard upstream): subclass `BaseExecutor` (override `getBaseUrls`/`buildHeaders`/`buildUrl`/`execute`), register in `executors/index.js` map. `getExecutor` falls back to `DefaultExecutor` when absent.
|
|
32
|
+
- **Translator**: add `request|response/<from>-to-<to>.js` calling `register(...)`, then import it in `translator/index.js`. Reuse `schema/` + `concerns/` — don't re-implement parsing.
|
|
33
|
+
|
|
34
|
+
## Pitfalls
|
|
35
|
+
|
|
36
|
+
- OpenAI bridge is lossy (thinking, non-base64 images, tool ids, is_error) — prefer a direct route for fragile pairs.
|
|
37
|
+
- `registry/index.js` is an auto-generated static import list; regenerate it (don't hand-edit) after adding a `registry/{id}.js`. REGISTRY_TEMPLATE is excluded by design.
|
|
38
|
+
- Special binary/protobuf formats (kiro EventStream, cursor protobuf, commandcode NDJSON) don't round-trip through OpenAI — handle in their executor.
|
|
39
|
+
- `rtk/` + `headroom.js` mutate the request body in-place and are **fail-open**: any error returns null and leaves the body untouched — never throw out of them. RTK skips `is_error`/`status:"error"` tool results to preserve traces.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
const ANTHROPIC_VERSION_HEADER = "2023-06-01";
|
|
2
|
+
const ANTHROPIC_BETA_BASE = Object.freeze([
|
|
3
|
+
"claude-code-20250219",
|
|
4
|
+
"oauth-2025-04-20",
|
|
5
|
+
"interleaved-thinking-2025-05-14",
|
|
6
|
+
"context-management-2025-06-27",
|
|
7
|
+
"prompt-caching-scope-2026-01-05",
|
|
8
|
+
"advanced-tool-use-2025-11-20",
|
|
9
|
+
"effort-2025-11-24",
|
|
10
|
+
"structured-outputs-2025-12-15",
|
|
11
|
+
"fast-mode-2026-02-01",
|
|
12
|
+
"redact-thinking-2026-02-12",
|
|
13
|
+
"token-efficient-tools-2026-03-28",
|
|
14
|
+
"advisor-tool-2026-03-01",
|
|
15
|
+
"extended-cache-ttl-2025-04-11",
|
|
16
|
+
"cache-diagnosis-2026-04-07"
|
|
17
|
+
]);
|
|
18
|
+
const CLAUDE_OAUTH_EXTRA_BETAS = Object.freeze(["fine-grained-tool-streaming-2025-05-14"]);
|
|
19
|
+
const ANTHROPIC_BETA_FULL = ANTHROPIC_BETA_BASE.join(",");
|
|
20
|
+
const ANTHROPIC_BETA_API_KEY = ANTHROPIC_BETA_BASE.filter(
|
|
21
|
+
(beta) => beta !== "oauth-2025-04-20"
|
|
22
|
+
).join(",");
|
|
23
|
+
const ANTHROPIC_BETA_CLAUDE_OAUTH = [
|
|
24
|
+
...ANTHROPIC_BETA_BASE.slice(0, 3),
|
|
25
|
+
...CLAUDE_OAUTH_EXTRA_BETAS,
|
|
26
|
+
...ANTHROPIC_BETA_BASE.slice(3)
|
|
27
|
+
].join(",");
|
|
28
|
+
const FORWARDABLE_CLIENT_BETAS = Object.freeze(["tool-search-tool-2025-10-19"]);
|
|
29
|
+
function mergeClientAnthropicBeta(base, clientBeta, allow = FORWARDABLE_CLIENT_BETAS) {
|
|
30
|
+
const baseList = base.split(",").map((s) => s.trim()).filter(Boolean);
|
|
31
|
+
if (typeof clientBeta !== "string" || !clientBeta.trim()) return baseList.join(",");
|
|
32
|
+
const seen = new Set(baseList.map((s) => s.toLowerCase()));
|
|
33
|
+
const allowSet = new Set(allow.map((s) => s.toLowerCase()));
|
|
34
|
+
for (const token of clientBeta.split(",").map((s) => s.trim()).filter(Boolean)) {
|
|
35
|
+
const lower = token.toLowerCase();
|
|
36
|
+
if (allowSet.has(lower) && !seen.has(lower)) {
|
|
37
|
+
baseList.push(token);
|
|
38
|
+
seen.add(lower);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return baseList.join(",");
|
|
42
|
+
}
|
|
43
|
+
function uniqueCommaValues(values) {
|
|
44
|
+
return [
|
|
45
|
+
...new Set(
|
|
46
|
+
values.filter((value) => value !== void 0 && value !== null && value !== "").flatMap((value) => String(value).split(",")).map((value) => value.trim()).filter(Boolean)
|
|
47
|
+
)
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
function normalizeAnthropicHeaderVariants(headers) {
|
|
51
|
+
if ("anthropic-version" in headers && "Anthropic-Version" in headers) {
|
|
52
|
+
const versionValues = uniqueCommaValues([
|
|
53
|
+
headers["anthropic-version"],
|
|
54
|
+
headers["Anthropic-Version"]
|
|
55
|
+
]);
|
|
56
|
+
delete headers["Anthropic-Version"];
|
|
57
|
+
delete headers["anthropic-version"];
|
|
58
|
+
if (versionValues.length > 0) {
|
|
59
|
+
headers["anthropic-version"] = versionValues[0];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if ("anthropic-beta" in headers && "Anthropic-Beta" in headers) {
|
|
63
|
+
const betaValues = uniqueCommaValues([headers["anthropic-beta"], headers["Anthropic-Beta"]]);
|
|
64
|
+
delete headers["Anthropic-Beta"];
|
|
65
|
+
delete headers["anthropic-beta"];
|
|
66
|
+
if (betaValues.length > 0) {
|
|
67
|
+
headers["anthropic-beta"] = betaValues.join(",");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const CLAUDE_CLI_VERSION = "2.1.195";
|
|
72
|
+
const CLAUDE_CLI_USER_AGENT = `claude-cli/${CLAUDE_CLI_VERSION} (external, cli)`;
|
|
73
|
+
const CLAUDE_CLI_STAINLESS_PACKAGE_VERSION = "0.94.0";
|
|
74
|
+
const CLAUDE_CLI_STAINLESS_RUNTIME_VERSION = "v24.3.0";
|
|
75
|
+
export {
|
|
76
|
+
ANTHROPIC_BETA_API_KEY,
|
|
77
|
+
ANTHROPIC_BETA_CLAUDE_OAUTH,
|
|
78
|
+
ANTHROPIC_BETA_FULL,
|
|
79
|
+
ANTHROPIC_VERSION_HEADER,
|
|
80
|
+
CLAUDE_CLI_STAINLESS_PACKAGE_VERSION,
|
|
81
|
+
CLAUDE_CLI_STAINLESS_RUNTIME_VERSION,
|
|
82
|
+
CLAUDE_CLI_USER_AGENT,
|
|
83
|
+
CLAUDE_CLI_VERSION,
|
|
84
|
+
FORWARDABLE_CLIENT_BETAS,
|
|
85
|
+
mergeClientAnthropicBeta,
|
|
86
|
+
normalizeAnthropicHeaderVariants
|
|
87
|
+
};
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { platform, arch } from "os";
|
|
2
|
+
import { proxyAwareFetch } from "../utils/proxyFetch.js";
|
|
3
|
+
|
|
4
|
+
// === Kimchi CLI version (dynamic, cached from GitHub releases) ===
|
|
5
|
+
const KIMCHI_FALLBACK_VERSION = "0.1.39";
|
|
6
|
+
let _kimchiVersionCache = null;
|
|
7
|
+
let _kimchiVersionFetching = null;
|
|
8
|
+
const KIMCHI_VERSION_TTL_MS = 3600_000; // 1h
|
|
9
|
+
|
|
10
|
+
async function fetchKimchiVersion() {
|
|
11
|
+
try {
|
|
12
|
+
const res = await proxyAwareFetch("https://api.github.com/repos/getkimchi/kimchi/releases/latest", {
|
|
13
|
+
headers: { Accept: "application/vnd.github+json" },
|
|
14
|
+
signal: AbortSignal.timeout(5000),
|
|
15
|
+
});
|
|
16
|
+
if (!res.ok) return KIMCHI_FALLBACK_VERSION;
|
|
17
|
+
const body = await res.json();
|
|
18
|
+
const tag = body?.tag_name || "";
|
|
19
|
+
const ver = tag.replace(/^v/, "");
|
|
20
|
+
return ver || KIMCHI_FALLBACK_VERSION;
|
|
21
|
+
} catch {
|
|
22
|
+
return KIMCHI_FALLBACK_VERSION;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export async function getKimchiVersion() {
|
|
27
|
+
if (_kimchiVersionCache && Date.now() - _kimchiVersionCache.ts < KIMCHI_VERSION_TTL_MS) return _kimchiVersionCache.ver;
|
|
28
|
+
if (_kimchiVersionFetching) return _kimchiVersionFetching;
|
|
29
|
+
_kimchiVersionFetching = fetchKimchiVersion().finally(() => { _kimchiVersionFetching = null; });
|
|
30
|
+
const ver = await _kimchiVersionFetching;
|
|
31
|
+
_kimchiVersionCache = { ver, ts: Date.now() };
|
|
32
|
+
return ver;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function getKimchiVersionSync() {
|
|
36
|
+
return _kimchiVersionCache?.ver || KIMCHI_FALLBACK_VERSION;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// === Gemini CLI ===
|
|
40
|
+
export const GEMINI_CLI_VERSION = "0.34.0";
|
|
41
|
+
export const GEMINI_CLI_API_CLIENT = "google-genai-sdk/1.41.0 gl-node/v22.19.0";
|
|
42
|
+
|
|
43
|
+
// Map Node arch to Gemini CLI arch string (x64/x86/arm64/...)
|
|
44
|
+
function geminiCLIArch() {
|
|
45
|
+
const a = arch();
|
|
46
|
+
if (a === "ia32") return "x86";
|
|
47
|
+
return a;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function geminiCLIUserAgent(model = "unknown") {
|
|
51
|
+
return `GeminiCLI/${GEMINI_CLI_VERSION}/${model || "unknown"} (${platform()}; ${geminiCLIArch()}; terminal)`;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// === GitHub Copilot ===
|
|
55
|
+
export const GITHUB_COPILOT = {
|
|
56
|
+
VSCODE_VERSION: "1.110.0",
|
|
57
|
+
COPILOT_CHAT_VERSION: "0.38.0",
|
|
58
|
+
USER_AGENT: "GitHubCopilotChat/0.38.0",
|
|
59
|
+
API_VERSION: "2025-04-01",
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// === Antigravity enums ===
|
|
63
|
+
export const IDE_TYPE = {
|
|
64
|
+
UNSPECIFIED: 0,
|
|
65
|
+
JETSKI: 10,
|
|
66
|
+
ANTIGRAVITY: 9,
|
|
67
|
+
PLUGINS: 7
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export const PLATFORM = {
|
|
71
|
+
UNSPECIFIED: 0,
|
|
72
|
+
DARWIN_AMD64: 1,
|
|
73
|
+
DARWIN_ARM64: 2,
|
|
74
|
+
LINUX_AMD64: 3,
|
|
75
|
+
LINUX_ARM64: 4,
|
|
76
|
+
WINDOWS_AMD64: 5
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export const PLUGIN_TYPE = {
|
|
80
|
+
UNSPECIFIED: 0,
|
|
81
|
+
CLOUD_CODE: 1,
|
|
82
|
+
GEMINI: 2
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export function getPlatformEnum() {
|
|
86
|
+
const os = platform();
|
|
87
|
+
const architecture = arch();
|
|
88
|
+
if (os === "darwin") return architecture === "arm64" ? PLATFORM.DARWIN_ARM64 : PLATFORM.DARWIN_AMD64;
|
|
89
|
+
if (os === "linux") return architecture === "arm64" ? PLATFORM.LINUX_ARM64 : PLATFORM.LINUX_AMD64;
|
|
90
|
+
if (os === "win32") return PLATFORM.WINDOWS_AMD64;
|
|
91
|
+
return PLATFORM.UNSPECIFIED;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export function getPlatformUserAgent() {
|
|
95
|
+
return `antigravity/1.104.0 ${platform()}/${arch()}`;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export const CLIENT_METADATA = {
|
|
99
|
+
ideType: IDE_TYPE.ANTIGRAVITY,
|
|
100
|
+
platform: getPlatformEnum(),
|
|
101
|
+
pluginType: PLUGIN_TYPE.GEMINI
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
// Internal anti-loop header
|
|
105
|
+
export const INTERNAL_REQUEST_HEADER = { name: "x-request-source", value: "local" };
|
|
106
|
+
|
|
107
|
+
// Suffix added to client tools when forwarding to Antigravity provider (anti-ban cloaking)
|
|
108
|
+
export const AG_TOOL_SUFFIX = "_ide";
|
|
109
|
+
|
|
110
|
+
// Suffix added to client tools when forwarding to Claude provider (anti-ban cloaking)
|
|
111
|
+
export const CLAUDE_TOOL_SUFFIX = "_ide";
|
|
112
|
+
|
|
113
|
+
// CC native default tools — these are Claude Code's own tools, kept as decoys
|
|
114
|
+
// Client tools matching these names are skipped (not renamed), others get _cc suffix
|
|
115
|
+
export const CC_DEFAULT_TOOLS = new Set([
|
|
116
|
+
"Task",
|
|
117
|
+
"TaskOutput",
|
|
118
|
+
"TaskStop",
|
|
119
|
+
"TaskCreate",
|
|
120
|
+
"TaskGet",
|
|
121
|
+
"TaskUpdate",
|
|
122
|
+
"TaskList",
|
|
123
|
+
"Bash",
|
|
124
|
+
"Glob",
|
|
125
|
+
"Grep",
|
|
126
|
+
"Read",
|
|
127
|
+
"Edit",
|
|
128
|
+
"Write",
|
|
129
|
+
"NotebookEdit",
|
|
130
|
+
"WebFetch",
|
|
131
|
+
"WebSearch",
|
|
132
|
+
"AskUserQuestion",
|
|
133
|
+
"Skill",
|
|
134
|
+
"EnterPlanMode",
|
|
135
|
+
"ExitPlanMode",
|
|
136
|
+
]);
|
|
137
|
+
|
|
138
|
+
// AG native default tools — kept as decoys with neutral description/properties
|
|
139
|
+
// These names must match exactly what AG sends in the real request log
|
|
140
|
+
export const AG_DEFAULT_TOOLS = new Set([
|
|
141
|
+
"browser_subagent",
|
|
142
|
+
"command_status",
|
|
143
|
+
"find_by_name",
|
|
144
|
+
"generate_image",
|
|
145
|
+
"grep_search",
|
|
146
|
+
"list_dir",
|
|
147
|
+
"list_resources",
|
|
148
|
+
"multi_replace_file_content",
|
|
149
|
+
"notify_user",
|
|
150
|
+
"read_resource",
|
|
151
|
+
"read_terminal",
|
|
152
|
+
"read_url_content",
|
|
153
|
+
"replace_file_content",
|
|
154
|
+
"run_command",
|
|
155
|
+
"search_web",
|
|
156
|
+
"send_command_input",
|
|
157
|
+
"task_boundary",
|
|
158
|
+
"view_content_chunk",
|
|
159
|
+
"view_file",
|
|
160
|
+
"write_to_file"
|
|
161
|
+
]);
|
|
162
|
+
|
|
163
|
+
// Antigravity chat/stream headers
|
|
164
|
+
export const ANTIGRAVITY_HEADERS = {
|
|
165
|
+
"User-Agent": `antigravity/1.107.0 ${platform()}/${arch()}`
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
// Cloud Code Assist API
|
|
169
|
+
export const CLOUD_CODE_API = {
|
|
170
|
+
loadCodeAssist: "https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",
|
|
171
|
+
onboardUser: "https://cloudcode-pa.googleapis.com/v1internal:onboardUser",
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
export const LOAD_CODE_ASSIST_HEADERS = {
|
|
175
|
+
"Content-Type": "application/json",
|
|
176
|
+
"User-Agent": "google-api-nodejs-client/9.15.1",
|
|
177
|
+
"X-Goog-Api-Client": "google-cloud-sdk vscode_cloudshelleditor/0.1",
|
|
178
|
+
"Client-Metadata": JSON.stringify({ ideType: IDE_TYPE.ANTIGRAVITY, platform: getPlatformEnum(), pluginType: PLUGIN_TYPE.GEMINI }),
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
export const LOAD_CODE_ASSIST_METADATA = {
|
|
182
|
+
ideType: IDE_TYPE.ANTIGRAVITY,
|
|
183
|
+
platform: getPlatformEnum(),
|
|
184
|
+
pluginType: PLUGIN_TYPE.GEMINI,
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
// System prompts
|
|
188
|
+
export const CLAUDE_SYSTEM_PROMPT = "You are Claude Code, Anthropic's official CLI for Claude.";
|
|
189
|
+
export const ANTIGRAVITY_DEFAULT_SYSTEM = "You are Antigravity, a powerful agentic AI coding assistant designed by the Google Deepmind team working on Advanced Agentic Coding.You are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.**Absolute paths only****Proactiveness**";
|
|
190
|
+
|
|
191
|
+
// Proactive token refresh lead times per provider (ms)
|
|
192
|
+
export const REFRESH_LEAD_MS = {
|
|
193
|
+
codex: 5 * 24 * 60 * 60 * 1000, // 5 days
|
|
194
|
+
claude: 4 * 60 * 60 * 1000, // 4 hours
|
|
195
|
+
iflow: 24 * 60 * 60 * 1000, // 24 hours
|
|
196
|
+
qwen: 20 * 60 * 1000, // 20 minutes
|
|
197
|
+
"kimi-coding": 5 * 60 * 1000, // 5 minutes
|
|
198
|
+
antigravity: 5 * 60 * 1000, // 5 minutes
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
// OAuth endpoints
|
|
202
|
+
export const OAUTH_ENDPOINTS = {
|
|
203
|
+
google: {
|
|
204
|
+
token: "https://oauth2.googleapis.com/token",
|
|
205
|
+
auth: "https://accounts.google.com/o/oauth2/auth"
|
|
206
|
+
},
|
|
207
|
+
openai: {
|
|
208
|
+
token: "https://auth.openai.com/oauth/token",
|
|
209
|
+
auth: "https://auth.openai.com/oauth/authorize"
|
|
210
|
+
},
|
|
211
|
+
anthropic: {
|
|
212
|
+
token: "https://api.anthropic.com/v1/oauth/token",
|
|
213
|
+
auth: "https://api.anthropic.com/v1/oauth/authorize"
|
|
214
|
+
},
|
|
215
|
+
qwen: {
|
|
216
|
+
token: "https://qwen.ai/api/v1/oauth2/token",
|
|
217
|
+
auth: "https://qwen.ai/api/v1/oauth2/device/code"
|
|
218
|
+
},
|
|
219
|
+
iflow: {
|
|
220
|
+
token: "https://iflow.cn/oauth/token",
|
|
221
|
+
auth: "https://iflow.cn/oauth"
|
|
222
|
+
},
|
|
223
|
+
github: {
|
|
224
|
+
token: "https://github.com/login/oauth/access_token",
|
|
225
|
+
auth: "https://github.com/login/oauth/authorize",
|
|
226
|
+
deviceCode: "https://github.com/login/device/code"
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
// Generate Kimi OAuth custom headers
|
|
231
|
+
export function buildKimiHeaders() {
|
|
232
|
+
return {
|
|
233
|
+
"X-Msh-Platform": "9router",
|
|
234
|
+
"X-Msh-Version": "2.1.2",
|
|
235
|
+
"X-Msh-Device-Model": typeof process !== "undefined" ? `${process.platform} ${process.arch}` : "unknown",
|
|
236
|
+
"X-Msh-Device-Id": `kimi-${Date.now()}`
|
|
237
|
+
};
|
|
238
|
+
}
|